অ্যাপাচি টিকা (Apache Tika) মূলত ফাইল থেকে টেক্সট এবং মেটাডাটা এক্সট্র্যাকশন এর জন্য ব্যবহৃত হয়। যখন এটি Apache Hadoop এবং Apache Spark এর সাথে ইন্টিগ্রেট করা হয়, তখন এটি বড় আকারের ডেটাসেট থেকে স্বয়ংক্রিয়ভাবে কনটেন্ট প্রসেসিং এবং ইনডেক্সিং করতে সাহায্য করে।
Apache Hadoop এর সাথে Tika Integration
Apache Hadoop একটি ডিস্ট্রিবিউটেড স্টোরেজ এবং প্রসেসিং সিস্টেম। টিকা Hadoop এর MapReduce ফ্রেমওয়ার্কের সাথে ব্যবহার করা যায় বড় আকারের ডকুমেন্ট প্রসেসিংয়ের জন্য।
ব্যবহারক্ষেত্র
- বিশাল আকারের স্ক্যান করা ফাইল থেকে টেক্সট বের করা।
- PDF, DOCX, এবং ইমেজ ফাইলের টেক্সট ও মেটাডাটা এক্সট্র্যাক্ট করা।
- ফাইল প্রসেসিংয়ের মাধ্যমে ডিস্ট্রিবিউটেড ইনডেক্স তৈরি করা।
Hadoop MapReduce এ Tika ব্যবহার করার উদাহরণ
ডিপেনডেন্সি
প্রয়োজনীয় Maven ডিপেনডেন্সি:
<dependency>
<groupId>org.apache.tika</groupId>
<artifactId>tika-parsers-standard-package</artifactId>
<version>2.x.x</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>3.x.x</version>
</dependency>
MapReduce Job: ফাইল প্রসেসিং
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.tika.Tika;
import java.io.IOException;
public class TikaHadoopIntegration {
public static class TikaMapper extends Mapper<Object, Text, Text, Text> {
private Tika tika = new Tika();
public void map(Object key, Text value, Context context) throws IOException, InterruptedException {
String fileContent = tika.parseToString(new Path(value.toString()).getFileSystem(context.getConfiguration()).open(new Path(value.toString())));
context.write(new Text(value.toString()), new Text(fileContent));
}
}
public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
Job job = Job.getInstance(conf, "Tika Hadoop Integration");
job.setJarByClass(TikaHadoopIntegration.class);
job.setMapperClass(TikaMapper.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(Text.class);
FileInputFormat.addInputPath(job, new Path(args[0]));
FileOutputFormat.setOutputPath(job, new Path(args[1]));
System.exit(job.waitForCompletion(true) ? 0 : 1);
}
}
কোডের ব্যাখ্যা:
TikaMapper: টিকা ব্যবহার করে প্রতিটি ইনপুট ফাইলের কনটেন্ট প্রসেস করে।- Hadoop Distributed File System (HDFS) থেকে ফাইল পড়ে এবং টেক্সট বের করে।
- Output: ফাইল নাম এবং এক্সট্র্যাক্টেড কন্টেন্ট।
Apache Spark এর সাথে Tika Integration
Apache Spark একটি ডিস্ট্রিবিউটেড ডেটা প্রসেসিং ফ্রেমওয়ার্ক যা দ্রুতগতির ইন-মেমোরি প্রসেসিং অফার করে। Spark এর RDD বা Dataset API এর মাধ্যমে Tika কে সহজে ইন্টিগ্রেট করা যায়।
ব্যবহারক্ষেত্র
- রিয়েল-টাইমে ডকুমেন্ট প্রসেসিং এবং টেক্সট এক্সট্র্যাকশন।
- বড় ডেটাসেট ইনডেক্স করা এবং Apache Lucene এর মাধ্যমে সার্চ ইঞ্জিন তৈরি করা।
Spark এবং Tika ব্যবহার করার উদাহরণ
Maven ডিপেনডেন্সি
<dependency>
<groupId>org.apache.tika</groupId>
<artifactId>tika-parsers-standard-package</artifactId>
<version>2.x.x</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.12</artifactId>
<version>3.x.x</version>
</dependency>
Spark Job: ফাইল থেকে টেক্সট এক্সট্র্যাকশন
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.SparkConf;
import org.apache.tika.Tika;
import java.util.List;
public class TikaSparkIntegration {
public static void main(String[] args) {
SparkConf conf = new SparkConf().setAppName("Tika Spark Integration").setMaster("local[*]");
JavaSparkContext sc = new JavaSparkContext(conf);
Tika tika = new Tika();
// ইনপুট ফাইল লোড করা
JavaRDD<String> files = sc.textFile("hdfs://path/to/input/files");
// ফাইল কন্টেন্ট প্রসেস করা
JavaRDD<String> content = files.map(filePath -> {
return tika.parseToString(new java.io.File(filePath));
});
// প্রসেস করা ডেটা দেখানো
List<String> result = content.collect();
result.forEach(System.out::println);
sc.close();
}
}
কোডের ব্যাখ্যা:
- JavaRDD: ইনপুট ডেটা লোড করে।
- টিকা ব্যবহার করে প্রতিটি ফাইল থেকে টেক্সট এক্সট্র্যাক্ট করা হয়।
- রেজাল্ট হিসেবে প্রসেস করা ডেটা collect করে প্রিন্ট করা হয়।
সুবিধা
- ডিস্ট্রিবিউটেড প্রসেসিং: Hadoop এবং Spark ব্যবহার করে বড় আকারের ডেটাসেট থেকে টেক্সট ও মেটাডাটা সহজে এক্সট্র্যাক্ট করা যায়।
- স্কেলেবিলিটি: হাজার হাজার ফাইল সহজে প্রসেস করা যায়।
- ইন্টিগ্রেশন ক্ষমতা: অন্যান্য টুল যেমন Lucene, Solr, এবং Elasticsearch এর সাথে ইন্টিগ্রেট করে সার্চ এবং ইনডেক্সিং সিস্টেম তৈরি করা যায়।
সারাংশ:
অ্যাপাচি টিকা সহজেই Apache Hadoop এবং Apache Spark এর সাথে ইন্টিগ্রেট করা যায় বড় আকারের ডেটাসেট থেকে টেক্সট এবং মেটাডাটা প্রসেসিংয়ের জন্য। এটি ডিস্ট্রিবিউটেড ডেটা প্রসেসিং সিস্টেমে একটি কার্যকর টুল যা তথ্য পুনরুদ্ধার এবং বিশ্লেষণের ক্ষেত্রে গুরুত্বপূর্ণ ভূমিকা রাখে।